"""
用于处理sdf数据
先做二维fft，然后选取固定频率的波形，
之后再做逆fft

具体函数细节，看代码处的多行注释
"""
import matplotlib as mpl
# mpl.use('Agg')
# import sdf_helper as sh
import matplotlib.pyplot as plt
import numpy as np
import analyse as al
from analyse.sim_parm import *
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
#======基本参数==============================
sdf_dim = 0
one2two = 1  #标志，如果设置为，sdf画图时将1维转化为2维
allow_error = 0.0001  #滤波允许偏离中心频率的范围
ifpositive = 0
# print('loading data %s%d' % (sdf_prefix, sdf_scope[0]))
# data = sh.getdata('%s%.4d.sdf' % (sdf_prefix, sdf_scope[0]))
# var = data.Electric_Field_Ey

#=========绘图参数==============================
fig = plt.figure(figsize=(22, 10))
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
#====读取数据==========================================
if sdf_dim == 1:
    if one2two == 1:
        X = var.grid_mid.data[0][xslice]
        Y = np.linspace(ymin, ymax, ny)
        X, Y = np.meshgrid(X, Y)
        Z = np.zeros([yy - yx, y - x])
        for j in range(yy - yx):
            for k in range(y - x):
                Z[j, k] = var.data[k + x]
    else:
        pass
elif sdf_dim == 2:
    X, Y = np.meshgrid(var.grid_mid.data[0][xslice],
                       var.grid_mid.data[1][yslice])
    Z = var.data.T[yslice, xslice]
elif sdf_dim == 3:
    pass
elif sdf_dim == 0:
    #自定义数据格式
    """
    请注意在定义完数据之后，重新修改sdf_dim的值
    """
    pass
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
#==================数据处理块========================================
if (sdf_dim == 2):
    #===============画出原图==================================
    ax = plt.subplot(1, 2, 1)
    tempax = al.plot.plot_2d(Z, X, Y, ax=ax, ifsdf=0)
    #===============开始滤波，并画图==================================
    ax = plt.subplot(1, 2, 2)
    [var_ifft2, X, Y, var_fft2, var_x_fre,
     var_y_fre] = al.tool.fft_analyse_filter(Z,
                                             X,
                                             Y=Y,
                                             sdf_dim=sdf_dim,
                                             one2two=1,
                                             allow_error=0.1,
                                             ifpositive=0,
                                             center=al.lp.wavenumber)
    al.plot.plot_2d(var_ifft2, X, Y, ifsdf=0, ax=ax)
    #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
elif (sdf_dim == 1):
    #===============画出原图==================================
    initZ = Z
    ax = plt.subplot(1, 2, 1)
    [Z1, X1, Y1] = al.tool.help_one2two(Z, X, Y)
    tempax = al.plot.plot_2d(Z1, X1, Y1, ax=ax, ifsdf=0)
    #========================================================
    [var_ifft, X, Y, var_fft,
     var_x_fre] = al.tool.fft_analyse_filter(initZ,
                                             X,
                                             Y=Y,
                                             sdf_dim=sdf_dim,
                                             one2two=one2two,
                                             allow_error=allow_error,
                                             ifpositive=ifpositive,
                                             center=al.lp.wavenumber)
    ax = plt.subplot(1, 2, 2)
    al.plot.plot_2d(var_ifft, X, Y, ax=ax, ifsdf=0)

#=======================================================================
# 绘制colorbar
al.plot.share_colorbar(fig, tempax)

print('savefig')
plt.savefig('test')
plt.close()